package com.pj.android.brower.push

import android.app.Notification
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.support.v4.app.NotificationCompat
import com.pj.android.brower.MyApplication
import com.pj.android.brower.R

class MyNotificationManager {

    private var notificationManager: NotificationManager? = null

    private var curNotifyId = 0

    companion object {
        val instance: MyNotificationManager by lazy {
            MyNotificationManager()
        }
    }

    /**
     * @param title 通知栏标题
     * @param content 通知内容
     * @param pendingIntent 点击通知栏意图
     */
    fun showNotification(context: Context, title: String, content: String, pendingIntent: PendingIntent) {
        curNotifyId = MyApplication.instance.notifyId
        MyApplication.instance.notifyId++
        try {
            //此处需要每次都新建
            notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?
            val mBuilder = NotificationCompat.Builder(context)
            mBuilder.setContentTitle(title)//设置通知栏标题
                    .setContentText(content) //设置通知栏显示内容
                    .setContentIntent(pendingIntent) //设置通知栏点击意图
                    .setTicker("新消息") //通知首次出现在通知栏，带上升动画效果的
                    .setWhen(System.currentTimeMillis())//通知产生的时间，会在通知信息里显示，一般是系统获取到的时间
                    .setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
                    .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
                    .setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
            mBuilder.setDefaults(Notification.DEFAULT_ALL)
            mBuilder.setSmallIcon(R.drawable.brower)
            notificationManager?.notify(curNotifyId, mBuilder.build())
        } catch (e: Exception) {
            e.printStackTrace()
        }

    }

}